using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using AjaxControlToolkit;
using System.Web.UI.MobileControls;
using System.Collections.Generic;
using Controladoras;
using EntidadesTO;
using System.Collections.Specialized;
using System.Web.Script.Services;


/// <summary>
/// Summary description for WebService
/// </summary>

[System.Web.Script.Services.ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Ubigeo : System.Web.Services.WebService
{

    public Ubigeo()
    {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public CascadingDropDownNameValue[] ObtenerPaises(
        string knownCategoryValues,
        string category)
    {
        PaisMantenedor.ObtenerInstancia().CargarLista();
        List<PaisTO> listaPais = PaisMantenedor.ObtenerInstancia().ListaPais;
        
        List<CascadingDropDownNameValue> values =
          new List<CascadingDropDownNameValue>();
        foreach (PaisTO pais in listaPais)
        {
            string desPais = pais.DesPais;
            int secPais = pais.SecPais;
            values.Add(new CascadingDropDownNameValue(
              desPais, secPais.ToString()));
        }
        return values.ToArray();
    }

    [WebMethod]
    public CascadingDropDownNameValue[] ObtenerDepartamentos(
        string knownCategoryValues,
        string category,
        string contextKey)
    {
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(
          knownCategoryValues);
        int secPais;
        if (!kv.ContainsKey("desPais") ||
            !Int32.TryParse(kv["desPais"], out secPais))
        {
            return null;
        }


        DepartamentoMantenedor.ObtenerInstancia().CargarLista(secPais);
        List<DepartamentoTO> listaDepartamento = DepartamentoMantenedor.ObtenerInstancia().ListaDepartamento;

        List<CascadingDropDownNameValue> values =
          new List<CascadingDropDownNameValue>();
        foreach (DepartamentoTO departamento in listaDepartamento)
        {
            string desDepartamento = departamento.DesDepartamento;
            int secDepartamento = departamento.SecDepartamento;
            if (secDepartamento.ToString() == contextKey)
                values.Add(new CascadingDropDownNameValue(
                            desDepartamento, secDepartamento.ToString(),true));
            else
                values.Add(new CascadingDropDownNameValue(
                            desDepartamento, secDepartamento.ToString()));
        }
        return values.ToArray();
    }

    [WebMethod]
    public CascadingDropDownNameValue[] ObtenerProvincias(
        string knownCategoryValues,
        string category,
        string contextKey)
    {
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(
          knownCategoryValues);
        int secDepartamento;
        if (!kv.ContainsKey("desDepartamento") ||
            !Int32.TryParse(kv["desDepartamento"], out secDepartamento))
        {
            return null;
        }


        ProvinciaMantenedor.ObtenerInstancia().CargarLista(secDepartamento);
        List<ProvinciaTO> listaProvincia = ProvinciaMantenedor.ObtenerInstancia().ListaProvincia;

        List<CascadingDropDownNameValue> values =
          new List<CascadingDropDownNameValue>();
        foreach (ProvinciaTO provincia in listaProvincia)
        {
            string desProvincia = provincia.DesProvincia;
            int secProvincia = provincia.SecProvincia;
            if (secProvincia.ToString() == contextKey)
                values.Add(new CascadingDropDownNameValue(
                            desProvincia, secProvincia.ToString(), true));
            else
                values.Add(new CascadingDropDownNameValue(
                  desProvincia, secProvincia.ToString()));
        }
        return values.ToArray();
    }

    [WebMethod]
    public CascadingDropDownNameValue[] ObtenerDistritos(
        string knownCategoryValues,
        string category,
        string contextKey)
    {
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(
          knownCategoryValues);
        int secProvincia;
        if (!kv.ContainsKey("desProvincia") ||
            !Int32.TryParse(kv["desProvincia"], out secProvincia))
        {
            return null;
        }


        DistritoMantenedor.ObtenerInstancia().CargarLista(secProvincia);
        List<DistritoTO> listaDistrito = DistritoMantenedor.ObtenerInstancia().ListaDistrito;

        List<CascadingDropDownNameValue> values =
          new List<CascadingDropDownNameValue>();
        foreach (DistritoTO distrito in listaDistrito)
        {
            string desDistrito = distrito.DesDistrito;
            int secDistrito = distrito.SecDistrito;
            if (secDistrito.ToString() == contextKey)
                values.Add(new CascadingDropDownNameValue(
                            desDistrito, secDistrito.ToString(), true));
            else
                values.Add(new CascadingDropDownNameValue(
                  desDistrito, secDistrito.ToString()));
        }
        return values.ToArray();
    }
}

